1. Technical Field of the Invention
This invention relates to a system and method for dynamically assigning Input/Output (I/O) priority in an open system.
2. Background Art
The Small Computer Serial Interface (SCSI) standard (ANSI X3.131-1994 and later versions) describes a well-defined peripheral bus that is independent of computer system buses. It is a shared, contention-based resource. A SCSI device connects to a SCSI bus via the device's controller and may be either a peripheral device or a host computer. Typically, one or more host computers connect to one or more peripheral devices through a SCSI bus. This arrangement allows users to upgrade presently-connected devices or add new devices to the bus without changing the devices already connect to the bus.
SCSI devices are either initiators or targets, or both. An initiator is a device such as a host computer that initiates and delivers requests for tasks for fulfillment. If a device can be both an initiator and target, it may only behave on the bus as one at any instant. A target is a device such as a disk drive that performs requested tasks. The SCSI architecture allows two, and only two, devices to communicate with each other over a shared bus simultaneously.
SCSI devices communicate with one another using a well-defined protocol involving sequential states called phases. A SCSI bus can only be in one phase at a time and will enter most phases only after exiting previous specific states. Initiators communicate with targets through bus requests called commands. Thereafter, the targets control request resolution. After receiving a command, but before fulfilling it, a target may disconnect from the bus. This allows initiators to perform other work (such as issuing commands to other targets) as the target performs internal processing.
Each SCSI device has a unique bus ID which users set using switches, jumpers, or set-up routines. Hosts typically have the highest SCSI bus ID, allowing them to initiate requests with minimum peripheral device interference. To obtain bus control, devices must wait for the bus to achieve a bus free phase which indicates the bus is idle. Devices then arbitrate for bus control. The winning device proceeds through a number of additional phases to complete its task. Losing devices must wait for the bus to achieve another bus free phase, at which time these losing devices may once again attempt to gain control of the SCSI bus.
This fixed priority arbitration scheme of SCSI has drawbacks. Higher-priority devices get access first, tending to monopolize the SCSI bus by consuming most, if not all, of the SCSI bus bandwidth, and possibly preventing lower-priority devices from gaining sufficient access to the SCSI bus to perform properly. This adverse effect on lower-priority devices is known as “access starvation,” “initiator starvation,” or “target starvation.” If a server (or initiator) is doing very fast I/O (which happens often if a server is doing a backup and no processing of data), it could flood a storage subsystem with I/O, especially if it is attached to the storage controller by a different SCSI bus than a production server that is doing processing of data in addition to doing I/O. However, inasmuch the production server I/O is generally more important than the backup I/O, there is a need in the art for a facility which allocates more I/O bandwidth to the production server I/O.
U.S. Pat. No. 6,223,244 describes a method whereby a high priority initiator on a shared bus is self-regulating by listening for pings from lower priority initiators so that it does not monopolize the bus and starve lower priority initiators, thus assuring that each initiator receives a share of bus bandwidth.
In the IBM Total Enterprise Storage Server (ESS), the zOS Work load Manager (WLM) controls I/O priority among I/O initiators for Extended Count Key Data (ECKD) volumes by assigning an I/O priority to each I/O operation. This is done by inserting an I/O priority value in either the Define Extent or Prefix Channel Control Word (CCW) parameter data sent to a storage controller in connection with each I/O operation. In this system, for parallel SCSI or Fiber Channel Protocol (FCP, a serial channel having, insofar as the present invention is concerned, similar characteristics to the parallel SCSI channel) initiator attachment, the storage controller assigns a static default priority to all I/O operations from these initiators. This static default priority is not dynamically changed to accommodate different priorities for different initiators, or changes in priorities for a given initiator or application with respect to time, and therefore the storage controller is susceptible to being flooded by I/O from a backup system accessing the storage controller as discussed above.